package leetcode.linkedlist;

public class SwapNodesInPairs24 {
    public class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }

    class Solution1 {
        public ListNode swapPairs(ListNode head) {
            ListNode p = head;
            ListNode s = null;
            if (p != null && p.next != null) {
                s = p.next;
                p.next = s.next;
                s.next = p;
                head = s;
                while (p.next != null && p.next.next != null) {
                    s = p.next.next;
                    p.next.next = s.next;
                    s.next = p.next;

                    p.next = s;
                    p = s.next;
                }
            }
            return head;
        }
    }

    class Solution2 {
        public ListNode swapPairs(ListNode head) {
            ListNode p = head;
            ListNode s = null;
            if (p != null && p.next != null) {
                s = p.next;
                p.next = s.next;
                s.next = p;
                head = s;

                while (p.next != null && p.next.next != null) {
                    s = p.next.next;
                    p.next.next = s.next;
                    s.next = p.next;
                    p.next = s;
                    p = s.next;
                }
            }
           return head;
        }
    }
}
